package com.iprojectmanager.views;

import java.util.*;
import javax.servlet.http.*;
import com.iprojectmanager.entities.*;
import com.iprojectmanager.managers.*;

/**
 * @author Alucard
 */
public class VistaActividad
{
    public static String getForm(HttpServletRequest request,String tipo)
    {
        Actividad activity = new Actividad();
        boolean exist = false;
        String readonly = "";
        String activitiestable = "";
        String responsibletable = "";
        String initdate = "";
        String enddate = "";
        
            if(tipo.compareTo("Modificar") == 0 || tipo.compareTo("Mostrar Informacion") == 0)
            {
                ActivitiesManager manager = new ActivitiesManager();
                long id = Long.valueOf(request.getParameter("actividad"));
                    activity = manager.getActividad(id);
                    exist = true;
                    if(tipo.compareTo("Mostrar Informacion") == 0)
                        readonly = " readonly ";
            }else if(tipo.compareTo("Eliminar") == 0)
            {
                ActivitiesManager manager = new ActivitiesManager();
                long id = Long.valueOf(request.getParameter("actividad"));
                    activity = manager.getActividad(id);
                    exist = true;
                return getFormEliminar(activity,exist);
            }
            

            activitiestable = getFormActividades(request,activity,exist,readonly);
            responsibletable = getFormResponsible(request,activity,exist,readonly);
            initdate = (exist == false)?getFecha("Fecha de Inicio","i"):getFecha("Fecha de Inicio","i",activity);
            enddate = (exist == false)?getFecha("Fecha de Terminacion","f"):getFecha("Fecha de Terminacion","f",activity);
        return
                "<div id=\"selection1\">" +
                    "<form action=\"ActivityControl\" method=\"GET\">" +
                        "<h3><span>ID de la Actividad</span></h3>" +
			"<p class=\"p1\"><span>" +
                            "<input readonly value=\"" +((exist == true)?activity.getId():"") +
                                    "\" type=\"text\" name=\"tbid\"  size=\"30\">" +
			"</span></p>" +
                        "<h3><span>Nombre de la actividad</span></h3>" +
			"<p class=\"p1\"><span>" +
                            "<input " + readonly + " value=\"" +((exist == true)?activity.getNombre():"") + 
                                       "\" type=\"text\" name=\"tbNombreAct\"  size=\"30\">" +
			"</span></p>" +
			"<h3><span>Descripción</span></h3>" +
                        "<p class=\"p1\"><span>" +
					"<textarea " + readonly + " rows=\"5\" name=\"taDescripcion\" cols=\"22\">"+ 
                                            ((exist == true)?activity.getDescripcion():"") +
                                        "</textarea>" +
			"</span></p>" +
                        "<h3><span>Prioridad</span></h3>" +
			"<p class=\"p1\"><span>" +
                            "<select " + readonly + " name=prioridad>" +
                                "<option " + ((activity.getPrioridad() == 1)?" selected ":"") + " value=\"1\">Alta" +
				"<option " + ((activity.getPrioridad() == 2)?" selected ":"") + " value=\"2\">Media" +
				"<option " + ((activity.getPrioridad() == 3)?" selected ":"") + " value=\"3\">Baja" +
                            "</select>" +
                        "</span></p>" +
                        "<h3><span>Dependende de</span></h3>" +
			"<p class=\"p1\"><span>" +
                                    activitiestable +
			"</span></p>" +
                        "<h3><span>Responsable</span></h3>" +
			"<p class=\"p1\"><span>" +
                                   responsibletable  +
			"</span></p>" +
			"<h3><span>Ingrese los tiempos</span></h3>" +
			"<p class=\"p1\">" +
                                initdate +
                                enddate +
				"</p>" +
				"<h3><span>Cambios</span></h3>" +
				"<p class=\"p1\"><span>" +
                                    "<input type=\"submit\" value=" + "\"" + tipo + "\"name=\"Aceptar\">" +
                                    "<input type=\"reset\" value=\"reset\" name=\"Cancelar\">" +
                            "</span></p>" +
			"</form>" +
		"</div>";
    }
    
    //Metodos para la forma de crear
    public static String getFecha(String title, String value)
    {
        Calendar calendar = Calendar.getInstance();
        String day = String.valueOf(calendar.get(Calendar.DAY_OF_MONTH));
        int month = calendar.get(Calendar.MONTH);
        String year = String.valueOf(calendar.get(Calendar.YEAR));
        return Utilities.getFormFecha(title, value, day,month,year);
    }
    
    //Metodos para la forma de modificar
    public static String getFecha(String title, String value, Actividad actividad)
    {
        String day = (value.compareTo("f") == 0)?String.valueOf(actividad.getFechaEntrega().getDate()):String.valueOf(actividad.getFechaInicio().getDate());
        int month = (value.compareTo("f") == 0)?actividad.getFechaEntrega().getMonth():actividad.getFechaInicio().getMonth();
        String year = (value.compareTo("f") == 0)?String.valueOf(actividad.getFechaEntrega().getYear()):String.valueOf(actividad.getFechaInicio().getYear());
               year = String.valueOf(Integer.valueOf(year) + 1900);
        return Utilities.getFormFecha(title,value,day,month,year);
    }

    //Genera la tabla de Actividades
    public static String getFormActividades(HttpServletRequest request,Actividad activity,boolean exist,String readonly)
    {
        HttpSession session = request.getSession();
        LiderProyecto lider = (LiderProyecto)session.getAttribute("user");
        long idproj = (lider.getProyecto() != null)?lider.getProyecto().getId():0;
        ActivitiesManager manager = new ActivitiesManager();
        ArrayList<Actividad> actividades = manager.getActividades(idproj);
        
        long idactividad = (request.getParameter("actividad") != null)?Long.valueOf(request.getParameter("actividad")):0;
        
        String table = "";
            for(Actividad act : actividades)
            {
                if(idactividad != act.getId())
                {
                    table +=
                        "<tr>" +
                            "<td>" +
                                "<input "+ ((exist == true && activity.getDependencias().contains(act))?" checked ":" ") +
                                readonly +
                                "name=\"acividades\" value=\""+ act.getId() +"\" type=\"checkbox\" size=\"20\">" +
                            "</td>" +
                            "<td>"+ act.getId() +"</td>"+
                            "<td>"+ act.getNombre() + "</td>"+
                            "<td>"+ act.getFechaInicio().toString() + "</td>"+
                            "<td>"+ act.getFechaEntrega().toString() + "</td>"+
                            "<td>"+ ((act.getResponsable() != null)?act.getResponsable().getNombre():"Sin asignar") + "</td>"+
                        "</tr>";
                }
            }
        
        return
                "<Table border=\"1\" cellspacing=\"1\">" +
                "<tr>" +
                    "<b><th>Elegir</th><th>Id</th><th>Nombre Actividad</th>" +
                        "<th>Fecha de Inicio</th><th>Fecha de Entrega</th><th>Responsable</th>" +
                    "</b>" +
                "</tr>" +
                    table +
                "</Table><br></br><br></br>";
    }

    //Genera la tabla de Responsables
    public static String getFormResponsible(HttpServletRequest request,Actividad activity,boolean exist,String readonly)
    {
        UserManager manager = new UserManager();
        HttpSession session = request.getSession();
        LiderProyecto lider = (LiderProyecto)session.getAttribute("user");
        ArrayList<IntegranteProyecto> users = manager.getIntegrantesFromProyecto(lider.getProyecto().getId());
        String table = "";

            for(IntegranteProyecto user : users)
            {
                table +=
                    "<tr>" +
                        "<td><input "+ ((activity.hasResponsable() == true && activity.getResponsable().getId() == user.getId())?" checked ":"") +
                                    " name=\"responsable\" value=\""+ user.getId() +"\" type=\"radio\" size=\"20\"></td>" +
                        "<td>"+ user.getId() +"</td>"+
                        "<td>"+ user.getNombre() + " " +
                                user.getApellidoPaterno() + " " +
                                user.getApellidoMaterno() + "</td>"+
                    "</tr>";
            }
        
        return
                        "<Table border=\"1\" cellspacing=\"1\">" +
                            "<tr>" +
                                "<b><th>Elegir</th><th>Id</th><th>Usuario</th></b>" +
                            "</tr>" +
                                table +
                        "</Table>" +
                        "<br></br>";
    }

    //Genera la forma para eliminar
    public static String getFormEliminar(Actividad activity,boolean exist)
    {
        return 
                "<div id=\"selection1\">" +
                    "<form action=\"ActivityControl\" method=\"GET\">" +
                        "<h3><span>ID de la Actividad</span></h3>" +
			"<p class=\"p1\"><span>" +
                            "<input readonly value=\"" +((exist == true)?activity.getId():"") +
                                    "\" type=\"text\" name=\"tbid\"  size=\"30\">" +
			"</span></p>" +
                        "<h3><span>Nombre de la actividad</span></h3>" +
			"<p class=\"p1\"><span>" +
                            "<input readonly value=\"" +((exist == true)?activity.getNombre():"") + 
                                       "\" type=\"text\" name=\"tbNombreAct\"  size=\"30\">" +
			"</span></p>" +
			"<h3><span>Descripción</span></h3>" +
                        "<p class=\"p1\"><span>" +
					"<textarea readonly rows=\"5\" name=\"taDescripcion\" cols=\"22\">"+ 
                                            ((exist == true)?activity.getDescripcion():"") +
                                        "</textarea>" +
			"</span></p>" +
                        "<h3><span>Esta seguro que desea eliminar la actividad?</span></h3>" +
			"<p class=\"p1\"><span>" +
                            "Solo se eliminara la actividad por lo que quedara un hueco en el proyecto.<br><br>" +
                            "<input type=\"submit\" value=\"Eliminar\" name=\"Aceptar\">" +
                            "<input type=\"submit\" value=\"Camcelar\" name=\"Camcelar\">" +
                        "</span></p>" +
                    "</form>" +
		"</div>";
    }
}
